package com.source.codemap.file;

import com.source.auto.utils.LogUtil;
import java.io.File;
import java.util.ArrayList;
import java.util.List;

/**
 * 循环文件读取代码
 *
 * @author wangchangjie
 * @date 2024/02/01
 */
public class LoopFileReadCodeUtil {


    public static List<String> getJavaFilePaths(String folderPath) {
        List<String> javaFilePaths = new ArrayList<>();
        File folder = new File(folderPath);

        if (folder.exists() && folder.isDirectory()) {
            // 递归获取所有Java文件路径
            exploreFolder(folder, javaFilePaths);
        } else {
            LogUtil.error("指定路径不是一个有效的文件夹路径。");
        }

        return javaFilePaths;
    }

    public static void exploreFolder(File folder, List<String> javaFilePaths) {
        File[] files = folder.listFiles();

        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    // 递归处理子文件夹
                    exploreFolder(file, javaFilePaths);
                } else if (file.isFile() && file.getName().endsWith(".java")) {
                    // 找到Java文件，添加到列表
                    javaFilePaths.add(file.getAbsolutePath());
                }
            }
        }
    }

    public static String getClassNameFromFilePath(String filePath) {
        File file = new File(filePath);

        if (file.exists() && file.isFile() && file.getName().endsWith(".java")) {
            String fileName = file.getName(); // 获取文件名，包括扩展名
            int lastIndex = fileName.lastIndexOf(".");

            if (lastIndex != -1) {
                // 截取文件名（去掉扩展名）并将斜杠替换为点，以获取类名
                return fileName.substring(0, lastIndex).replace(File.separator, ".");
            } else {
                LogUtil.error("文件名不包含扩展名 .java");
            }
        } else {
            LogUtil.error("指定路径不是一个有效的Java文件路径。");
        }

        return null;
    }
}
